home *** CD-ROM | disk | FTP | other *** search
/ X User Tools / X User Tools (O'Reilly and Associates)(1994).ISO / sun4c / archive / tcltk.z / tcltk / man / catn / Tcl.n < prev    next >
Text File  |  1994-09-20  |  9KB  |  265 lines

  1.  
  2.  
  3.  
  4. Tcl(n)                Tcl Built-In Commands
  5.  
  6.  
  7.  
  8. _________________________________________________________________
  9.  
  10. NAME
  11.      Tcl - Summary of Tcl language syntax.
  12. _________________________________________________________________
  13.  
  14.  
  15. DESCRIPTION
  16.      The following rules define the syntax and semantics  of  the
  17.      Tcl language:
  18.  
  19.      [1]  A Tcl script is a string containing one  or  more  com-
  20.           mands.  Semi-colons and newlines are command separators
  21.           unless quoted as described below.  Close  brackets  are
  22.           command  terminators  during  command substitution (see
  23.           below) unless quoted.
  24.  
  25.      [2]  A command is evaluated in two steps.   First,  the  Tcl
  26.           interpreter  breaks the command into _w_o_r_d_s and performs
  27.           substitutions as described below.  These  substitutions
  28.           are  performed  in  the same way for all commands.  The
  29.           first word is used to locate  a  command  procedure  to
  30.           carry  out  the  command,  then all of the words of the
  31.           command are passed to the command procedure.  The  com-
  32.           mand  procedure  is free to interpret each of its words
  33.           in any way it likes, such as an integer, variable name,
  34.           list,  or  Tcl  script.   Different  commands interpret
  35.           their words differently.
  36.  
  37.      [3]  Words of a command are separated by white space (except
  38.           for newlines, which are command separators).
  39.  
  40.      [4]  If the  first  character  of  a  word  is  double-quote
  41.           (``"'')  then  the  word  is  terminated  by  the  next
  42.           double-quote character.  If semi-colons,  close  brack-
  43.           ets,  or  white  space  characters (including newlines)
  44.           appear between the quotes  then  they  are  treated  as
  45.           ordinary  characters and included in the word.  Command
  46.           substitution, variable substitution, and backslash sub-
  47.           stitution  are  performed on the characters between the
  48.           quotes as described below.  The double-quotes  are  not
  49.           retained as part of the word.
  50.  
  51.      [5]  If the first character of  a  word  is  an  open  brace
  52.           (``{'')  then  the  word  is terminated by the matching
  53.           close brace (``}'').  Braces nest within the word:  for
  54.           each  additional open brace there must be an additional
  55.           close brace (however, if an open brace or  close  brace
  56.           within  the  word is quoted with a backslash then it is
  57.           not counted in locating the matching close brace).   No
  58.           substitutions  are  performed on the characters between
  59.           the braces except for  backslash-newline  substitutions
  60.  
  61.  
  62.  
  63. Tcl                                                             1
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. Tcl(n)                Tcl Built-In Commands
  71.  
  72.  
  73.  
  74.           described  below,  nor  do semi-colons, newlines, close
  75.           brackets, or white space receive any special  interpre-
  76.           tation.   The  word will consist of exactly the charac-
  77.           ters between the outer braces, not including the braces
  78.           themselves.
  79.  
  80.      [6]  If a word contains an open  bracket  (``['')  then  Tcl
  81.           performs  _c_o_m_m_a_n_d  _s_u_b_s_t_i_t_u_t_i_o_n.  To do this it invokes
  82.           the Tcl interpreter recursively to process the  charac-
  83.           ters  following  the open bracket as a Tcl script.  The
  84.           script may contain any number of commands and  must  be
  85.           terminated  by  a close bracket (``]'').  The result of
  86.           the script (i.e. the result of  its  last  command)  is
  87.           substituted  into the word in place of the brackets and
  88.           all of the characters between them.  There may  be  any
  89.           number of command substitutions in a single word.  Com-
  90.           mand substitution is not performed on words enclosed in
  91.           braces.
  92.  
  93.      [7]  If a word contains a dollar-sign (``$'') then Tcl  per-
  94.           forms  _v_a_r_i_a_b_l_e  _s_u_b_s_t_i_t_u_t_i_o_n:  the dollar-sign and the
  95.           following characters are replaced in the  word  by  the
  96.           value  of a variable.  Variable substition may take any
  97.           of the following forms:
  98.  
  99.           $_n_a_m_e          _N_a_m_e is the name of a  scalar  variable;
  100.                          the  name is terminated by any character
  101.                          that isn't a letter,  digit,  or  under-
  102.                          score.
  103.  
  104.           $_n_a_m_e(_i_n_d_e_x)   _N_a_m_e gives the name of an array variable
  105.                          and  _i_n_d_e_x  gives the name of an element
  106.                          within that array.   _N_a_m_e  must  contain
  107.                          only  letters,  digits, and underscores.
  108.                          Command substitutions, variable  substi-
  109.                          tutions, and backslash substitutions are
  110.                          performed on the characters of _i_n_d_e_x.
  111.  
  112.           ${_n_a_m_e}        _N_a_m_e is the name of a  scalar  variable.
  113.                          It may contain any characters whatsoever
  114.                          except for close braces.
  115.  
  116.      There may be any number of variable substitutions in a  sin-
  117.      gle  word.   Variable substitution is not performed on words
  118.      enclosed in braces.
  119.  
  120.      [8]  If a backslash  (``\'')  appears  within  a  word  then
  121.           _b_a_c_k_s_l_a_s_h  _s_u_b_s_t_i_t_u_t_i_o_n occurs.  In all cases but those  |
  122.           described below the backslash is dropped and  the  fol-  |
  123.           lowing  character  is  treated as an ordinary character  |
  124.           and included in the word.  This allows characters  such
  125.           as  double  quotes, close brackets, and dollar signs to
  126.  
  127.  
  128.  
  129. Tcl                                                             2
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. Tcl(n)                Tcl Built-In Commands
  137.  
  138.  
  139.  
  140.           be included in words without  triggering  special  pro-
  141.           cessing.   The  following  table  lists  the  backslash
  142.           sequences that are handled specially,  along  with  the
  143.           value that replaces each sequence.
  144.  
  145.           \a                                                            ||
  146.                 Audible alert (bell) (0x7).
  147.  
  148.           \b    Backspace (0x8).
  149.  
  150.           \f    Form feed (0xc).
  151.  
  152.           \n    Newline (0xa).
  153.  
  154.           \r    Carriage-return (0xd).
  155.  
  156.           \t    Tab (0x9).
  157.  
  158.           \v    Vertical tab (0xb).
  159.  
  160.           \<newline>_w_h_i_t_e_S_p_a_c_e
  161.                 A single space character replaces the  backslash,  |
  162.                 newline,  and  all white space after the newline.  |
  163.                 This backslash sequence is unique in that  it  is  |
  164.                 replaced  in  a separate pre-pass before the com-  |
  165.                 mand is actually parsed.  This means that it will  |
  166.                 be  replaced  even when it occurs between braces,  |
  167.                 and the resulting space will be treated as a word  |
  168.                 separator if it isn't in braces or quotes.
  169.  
  170.           \\    Backslash (``\'').
  171.  
  172.           \_o_o_o  The digits _o_o_o (one, two, or three of them)  give
  173.                 the octal value of the character.
  174.  
  175.           \x_h_h  The hexadecimal digits _h_h  give  the  hexadecimal  |
  176.                 value of the character.  Any number of digits may  |
  177.                 be present.
  178.  
  179.      Backslash substitution is not performed on words enclosed in
  180.      braces, except for backslash-newline as described above.
  181.  
  182.      [9]  If a hash character (``#'') appears at  a  point  where
  183.           Tcl  is expecting the first character of the first word
  184.           of a command, then the hash character and  the  charac-
  185.           ters  that  follow it, up through the next newline, are
  186.           treated as a comment and ignored.  The comment  charac-
  187.           ter only has significance when it appears at the begin-
  188.           ning of a command.
  189.  
  190.      [10] Each character is processed exactly  once  by  the  Tcl
  191.           interpreter as part of creating the words of a command.
  192.  
  193.  
  194.  
  195. Tcl                                                             3
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. Tcl(n)                Tcl Built-In Commands
  203.  
  204.  
  205.  
  206.           For example, if  variable  substition  occurs  then  no
  207.           further  substitions  are performed on the value of the
  208.           variable;  the value is inserted into the  word  verba-
  209.           tim.   If  command  substitution occurs then the nested
  210.           command is processed entirely by the recursive call  to
  211.           the  Tcl  interpreter;  no  substitutions  are perfomed
  212.           before making the recursive call and no additional sub-
  213.           stitutions  are  performed  on the result of the nested
  214.           script.
  215.  
  216.      [11] Substitutions do not affect the word  boundaries  of  a
  217.           command.  For example, during variable substitution the
  218.           entire value of the variable becomes part of  a  single
  219.           word, even if the variable's value contains spaces.
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261. Tcl                                                             4
  262.  
  263.  
  264.  
  265.